#ifndef svl_TText_H
#define svl_TText_H

#include "svl.h"

namespace svl
{
////////////////////////////////////////////////////////////////////////////////

struct TText
{
  TText(TMem    &V) { MakeLines(V);}
  TText(TString &V) { MakeLines(V);}
  TText()           {}
  //
  void Clear() { a.Clear();}
  void operator = (TMem &V) { MakeLines(V);}
  //
  void MakeLines(TMem    &Mem);
  void MakeLines(TString &V) { TMem Mem; Mem.Add((BYTE*)V.S(),V.Len()); MakeLines(Mem); }
  //
  bool LoadFromFile(TString FileName);
  bool SaveToFile  (TString FileName);
  //
  int  CountLines()        { return a.Numb();}
  void AddLine(TString &V) { a.Add(new TLine(V),true);}
  void AddLine(char    *V) { a.Add(new TLine(V),true);}
  TString &GetLine(int N)  { return ((TLine*)a.Get(N))->Line;}
  //
  void CopyFrom(TText &From);
  //
  TString GetInfo();

private:
  struct TLine : public TArray_Object 
  { 
    TString Line; 
    //
    TLine() {}
    TLine(TString &V) { Line = V;}
    TLine(char    *V) { Line = V;}
  };
  TArray a;
};

////////////////////////////////////////////////////////////////////////////////
}

#endif
